.\" Copyright (C) 2004 International Business Machines Corporation
.\" Written by Megan Schneider based on the Trusted Computing Group Software Stack Specification Version 1.1 Golden
.\"
.de Sh \" Subsection
.br
.if t .Sp
.ne 5
.PP
\fB\\$1\fR
.PP
..
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Ip \" List item
.br
.ie \\n(.$>=3 .ne \\$3
.el .ne 3
.IP "\\$1" \\$2
..
.TH "Tspi_TPM_GetCapability" 3 "2004-05-25" "TSS 1.1"
.ce 1
TCG Software Stack Developer's Reference
.SH NAME
Tspi_TPM_GetCapability \- get information on the capabilities of the TPM
.SH "SYNOPSIS"
.ad l
.hy 0
.nf
.B #include <tss/platform.h>
.B #include <tss/tcpa_defines.h>
.B #include <tss/tcpa_typedef.h>
.B #include <tss/tcpa_struct.h>
.B #include <tss/tss_typedef.h>
.B #include <tss/tss_structs.h>
.B #include <tss/tspi.h>
.sp
.BI "TSS_RESULT Tspi_TPM_GetCapability(TSS_HTPM " hTPM ",              TSS_FLAG " capArea ","
.BI "                                  UINT32   " ulSubCapLength ",    BYTE*    " rgbSubCap ", "
.BI "                                  UINT32*  " pulRespDataLength ", BYTE**   " prgbRespData ");"
.fi
.sp
.ad
.hy

.SH "DESCRIPTION"
.PP
\fBTspi_TPM_GetCapability\fR
gets information on various capabilities of the TPM. This command can
be used to learn how many PCRs the TPM supports, etc.

.SH "PARAMETERS"
.PP
.SS hTPM
The \fIhTPM\fR parameter is used to specify the handle of the TPM object.
.SS capArea
The \fIcapArea\fR parameter is the flag indicating the attribute to query. Possible values are:
.SS ulSubCapLength
The \fIulSubCapLength\fR parameter is the length in bytes of the
\fIrgbSubCap\fR parameter.
.SS rgbSubCap
The \fIrgbSubCap\fR parameter is the data indicating the attribute to query. Possible values are:
.SS pulRespDataLength
The \fIpulRespDataLength\fR parameter is the length in bytes of the
\fIprgbRespData\fR parameter.
.SS prgbRespData
The \fIprgbRespData\fR parameter receives a pointer to the actual data
of the specified attribute.

.SH "NOTES"
.PP
The following Capability Areas and Sub-Capability Areas are supported by 1.1 TSS's:
.sp 2
.BR TSS_TPMCAP_ORD " - query whether an ordinal is supported by the TPM. "
        subCaps: TPM_ORD_* (see tcpa_literals.h)
.sp
.BR TSS_TPMCAP_FLAG " - query for the volatile and non-volatile flags inside the TPM. (Must be owner authorized). In this case, the 2 UINT32 values will be returned concatenated together in prgbRespData. "
        subCaps: ignored.
.sp
.BR TSS_TPMCAP_ALG " - query whether an algorithm is supported by the TPM. "
        subCaps: TSS_ALG_RSA
                 TSS_ALG_DES
                 TSS_ALG_3DES
                 TSS_ALG_SHA
                 TSS_ALG_HMAC
                 TSS_ALG_AES
.sp
.BR TSS_TPMCAP_PROPERTY " - query a property of the TPM. "
        subCaps: TSS_TPMCAP_PROP_PCR
                 TSS_TPMCAP_PROP_DIR
                 TSS_TPMCAP_PROP_MANUFACTURER
                 TSS_TPMCAP_PROP_SLOTS
.sp
.BR TSS_TPMCAP_VERSION " - get the TSS_VERSION structure tha identifies the TPM. "
        subCaps: ignored.


.SH "RETURN CODES"
.PP
\fBTspi_TPM_GetCapability\fR returns TSS_SUCCESS on success, otherwise
one of the following values is returned:
.TP
.SM TSS_E_INVALID_HANDLE
\fIhTPM\fR is not a valid handle.

.TP
.SM TSS_E_INTERNAL_ERROR
An internal SW error has been detected.

.TP
.SM TSS_E_BAD_PARAMETER
One or more parameters is bad.

.SH "CONFORMING TO"

.PP
\fBTspi_TPM_GetCapability\fR conforms to the Trusted Computing Group
Software Specification version 1.1 Golden

.SH "SEE ALSO"

.PP
\fBTspi_TPM_GetCapabilitySigned\fR(3), \fBTspi_TPM_GetEvent\fR(3).

